home *** CD-ROM | disk | FTP | other *** search
/ Gigarom 1 / Gigarom Macintosh Archives (Quantum Leap)(CDRM1080320)(1993).iso / FILES / DEV / A-B / 607+gest.cpt / SoundInput.h < prev    next >
Text File  |  1990-10-17  |  8KB  |  228 lines

  1. /*
  2. /*  Soundinput.h for system 6.0.6 
  3.  *
  4.  *  Copyright (c) 1990 Symantec Corporation.  All rights reserved.
  5.  *
  6.  *  These interfaces are based on material copyrighted
  7.  *  by Apple Computer, Inc., 1985-1990.
  8.  *
  9.  *    Written 10/10/90 MYG  based on the  MPW soundinput.h 
  10.  *
  11. */
  12.  
  13.  
  14.  
  15.  
  16. #ifndef _SoundInput_
  17. #define _SoundInput_
  18.  
  19. #ifndef _MacTypes_
  20. #include <MacTypes.h>
  21. #endif
  22.  
  23.  
  24.  
  25. /* Error codes */
  26. enum {
  27.     siUnknownQuality = -232,    /* invalid quality selector (returned by driver) */
  28.     siUnknownInfoType,            /* invalid info type selector (returned by driver) */
  29.     siInputDeviceErr,            /* input device hardware failure */
  30.     siBadRefNum,                /* invalid input device reference number */
  31.     siBadDeviceName,            /* input device could not be opened */
  32.     siDeviceBusyErr,            /* input device already in use */
  33.     siInvalidSampleSize,        /* invalid sample size */
  34.     siInvalidSampleRate,        /* invalid sample rate */
  35.     siHardDriveTooSlow,            /* hard drive too slow to record to disk */
  36.     siInvalidCompression,        /* invalid compression type */
  37.     siNoBufferSpecified,        /* returned by synchronous SPBRecord if nil buffer passed */
  38.     siBadSoundInDevice,            /* invalid index passed to SoundInGetIndexedDevice */
  39.     siNoSoundInHardware            /* ••• not used anywhere */
  40. };
  41.     
  42. #define siDeviceIsConnected         1                /* input device is connected and ready forinput */
  43. #define siDeviceNotConnected     0                /* input device is not connected */
  44. #define siDontKnowIfConnected    -1                /* can't tell if input device is connected*/
  45.  
  46. #define siReadPermission         0                /* permission passed to SPBOpenDevice */
  47. #define siWritePermission         1                /* permission passed to SPBOpenDevice */
  48.  
  49. /* Info Selectors for Sound Input Drivers */
  50.  
  51. #define siDeviceConnected        'dcon'            /* input device connection status */
  52. #define siRTFOnOff                'rtf '            /* record to file state */
  53. #define siAGCOnOff                'agc '            /* automatic gain control state */
  54. #define siPlayThruOnOff            'plth'            /* playthrough state */
  55. #define siTwosComplementOnOff    'twos'            /* two's complement state */
  56. #define siLevelMeterOnOff        'lmet'            /* level meter state */
  57. #define siPauseRecording        'paus'            /* recording paused state */
  58. #define siRecordingQuality        'qual'            /* recording quality */
  59. #define siVoxRecordInfo            'voxr'            /* VOX record parameters */
  60. #define siVoxStopInfo            'voxs'            /* VOX stop parameters */
  61. #define siNumberChannels        'chan'            /* current number of channels */
  62. #define siSampleSize            'ssiz'            /* current sample size */
  63. #define siSampleRate            'srat'            /* current sample rate */
  64. #define siCompressionType        'comp'            /* current compression type */
  65. #define siCompressionFactor        'cmfa'            /* current compression factor */
  66. #define siCompressionHeader        'cmhd'            /* return compression header */
  67. #define siUserInterruptProc        'user'            /* user interrupt routine */
  68. #define siDeviceName            'name'            /* input device name */
  69. #define siDeviceIcon            'icon'            /* input device icon */
  70. #define siDeviceBufferInfo        'dbin'            /* size of interrupt buffer */
  71. #define siSampleSizeAvailable    'ssav'            /* sample sizes available */
  72. #define siSampleRateAvailable    'srav'            /* sample rates available */
  73. #define siCompressionAvailable    'cmav'            /* compression types available */
  74. #define siChannelAvailable        'chav'            /* number of channels available */
  75. #define siInitializeDriver        'init'            /* initialize driver */
  76. #define siCloseDriver            'clos'            /* close driver */
  77. #define siAsync                    'asyn'            /* asynchronous capability */
  78. #define siOptionsDialog            'optd'            /* display options dialog */
  79.  
  80. /* Qualities */
  81.  
  82. #define siBestQuality            'best'
  83. #define siBetterQuality            'betr'
  84. #define siGoodQuality            'good'
  85.  
  86. /* Sound Input Parameter Block */
  87.  
  88. typedef struct {
  89.     long            inRefNum;                    /* reference number of sound input device */
  90.     unsigned long    count;                        /* number of bytes to record */
  91.     unsigned long    milliseconds;                /* number of milliseconds to record */
  92.     unsigned long    bufferLength;                /* length of buffer in bytes */
  93.     Ptr                 bufferPtr;                    /* buffer to store sound data in */
  94.     ProcPtr         completionRoutine;            /* completion routine */
  95.     ProcPtr         interruptRoutine;            /* interrupt routine */
  96.     long            userLong;                    /* user-defined field */
  97.     OSErr            error;                        /* error */
  98.     long            unused1;                    /* reserved - must be zero */
  99. } SPB, *SPBPtr;
  100.  
  101. /* Function selectors for the Sound Input calls.
  102.    High byte = # words of parameters. */
  103.  
  104. #define siToolNum                20                /* tool number of for SndDispVersion call */
  105. #define    siMOVEL                    0x203C            /* MOVE.L    #selector,D0 */
  106.  
  107. #define siVersion                (0*256)+0
  108. #define siSndRecord                (8*256)+4
  109. #define siSignInDevice            (3*256)+12
  110. #define siSignOutDevice            (1*256)+16
  111. #define siGetIndexedDevice        (5*256)+20
  112. #define siOpenDevice            (5*256)+24
  113. #define siCloseDevice            (2*256)+28
  114. #define siRecord                (3*256)+32
  115. #define siPauseRecordingR        (2*256)+40
  116. #define siResumeRecording        (2*256)+44
  117. #define siStopRecording            (2*256)+48
  118. #define siGetRecordingStatus    (14*256)+52
  119. #define siGetDeviceInfo            (6*256)+56
  120. #define siSetDeviceInfo            (6*256)+60
  121. #define siMilliSecondsToBytes    (4*256)+64
  122. #define siBytesToMilliSeconds    (4*256)+68
  123. #define siSetupSndHeader        (13*256)+72
  124. #define siSetupAIFFHeader        (11*256)+76
  125.  
  126.  
  127. /* SPBVersion (0 parameter words) */
  128. pascal unsigned long
  129. SPBVersion(void)
  130.     = {siMOVEL,siVersion,siToolNum,0xA800};
  131.  
  132. /* SndRecord (8 parameter words) */
  133. pascal OSErr
  134. SndRecord(ProcPtr filterProc, Point corner, OSType quality, Handle *sndHandle)
  135.     = {siMOVEL,siSndRecord,siToolNum,0xA800};
  136.  
  137. /* SPBSignInDevice (3 parameter words) */
  138. pascal OSErr 
  139. SPBSignInDevice(short deviceRefNum, Str255 deviceName)
  140.     = {siMOVEL,siSignInDevice,siToolNum,0xA800};
  141.  
  142. /* SPBSignOutDevice (1 parameter words) */
  143. pascal OSErr
  144. SPBSignOutDevice(short deviceRefNum)
  145.     = {siMOVEL,siSignOutDevice,siToolNum,0xA800};
  146.  
  147. /* SPBGetIndexedDevice (5 parameter words) */
  148. pascal OSErr 
  149. SPBGetIndexedDevice(short count, Str255 deviceName, Handle *deviceIconHandle)
  150.     = {siMOVEL,siGetIndexedDevice,siToolNum,0xA800};
  151.  
  152. /* SPBOpenDevice (5 parameter words) */
  153. pascal OSErr 
  154. SPBOpenDevice(Str255 deviceName, short permission, long *inRefNum)
  155.     = {siMOVEL,siOpenDevice,siToolNum,0xA800};
  156.  
  157. /* SPBCloseDevice (2 parameter words) */
  158. pascal OSErr 
  159. SPBCloseDevice(long inRefNum)
  160.     = {siMOVEL,siCloseDevice,siToolNum,0xA800};
  161.  
  162. /* SPBRecord (3 parameter words) */
  163. pascal OSErr 
  164. SPBRecord(SPBPtr inParamPtr, Boolean asynchFlag)
  165.     = {siMOVEL,siRecord,siToolNum,0xA800};
  166.  
  167. /* SPBPauseRecording (2 parameter words) */
  168. pascal OSErr 
  169. SPBPauseRecording(long inRefNum)
  170.     = {siMOVEL,siPauseRecordingR,siToolNum,0xA800};
  171.  
  172. /* SPBResumeRecording (2 parameter words) */
  173. pascal OSErr 
  174. SPBResumeRecording(long    inRefNum)
  175.     = {siMOVEL,siResumeRecording,siToolNum,0xA800};
  176.  
  177. /* SPBStopRecording (2 parameter words) */
  178. pascal OSErr 
  179. SPBStopRecording(long inRefNum)
  180.     = {siMOVEL,siStopRecording,siToolNum,0xA800};
  181.  
  182. /* SPBGetRecordingStatus (14 parameter words) */
  183. pascal OSErr 
  184. SPBGetRecordingStatus(    long            inRefNum,
  185.                         short            *recordingStatus,
  186.                         short            *meterLevel,
  187.                         unsigned long    *totalSamplesToRecord,
  188.                         unsigned long    *numberOfSamplesRecorded,
  189.                         unsigned long    *totalMsecsToRecord,
  190.                         unsigned long    *numberOfMsecsRecorded )
  191.     = {siMOVEL,siGetRecordingStatus,siToolNum,0xA800};
  192.  
  193. /* SPBGetDeviceInfo (6 parameter words) */
  194. pascal OSErr 
  195. SPBGetDeviceInfo(long inRefNum, OSType infoType, char *infoData)
  196.     = {siMOVEL,siGetDeviceInfo,siToolNum,0xA800};
  197.  
  198. /* SPBSetDeviceInfo (6 parameter words) */
  199. pascal OSErr 
  200. SPBSetDeviceInfo(long inRefNum, OSType infoType, char *infoData)
  201.     = {siMOVEL,siSetDeviceInfo,siToolNum,0xA800};
  202.  
  203. /* SPBMilliSecondsToBytes (4 parameter words) */
  204. pascal OSErr 
  205. SPBMilliSecondsToBytes(long inRefNum, long *milliSeconds)
  206.     = {siMOVEL,siMilliSecondsToBytes,siToolNum,0xA800};
  207.  
  208. /* SPBBytesToMilliSeconds (4 parameter words) */
  209. pascal OSErr 
  210. SPBBytesToMilliSeconds(long inRefNum, long *byteCount)
  211.     = {siMOVEL,siBytesToMilliSeconds,siToolNum,0xA800};
  212.  
  213. /* SetupSndHeader (13 parameter words) */
  214. pascal OSErr
  215. SetupSndHeader(Handle sndH, short numChannels, Fixed sampleRate,
  216.                 short sampleSize, OSType compressionType,
  217.                 short baseNote, unsigned long numBytes, short *headerLen)
  218.     = {siMOVEL,siSetupSndHeader,siToolNum,0xA800};
  219.  
  220. /* SetupAIFFHeader (11 parameter words) */
  221. pascal OSErr
  222. SetupAIFFHeader(short fRefNum, short numChannels, Fixed sampleRate,
  223.                 short sampleSize, OSType compressionType,
  224.                 unsigned long numBytes, unsigned long numFrames)
  225.     = {siMOVEL,siSetupAIFFHeader,siToolNum,0xA800};
  226.  
  227. #endif
  228.